// 创建用户集合
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const joi = require('joi');
const User = mongoose.model('User', new mongoose.Schema({
    username: {
        type: String,
        required: [true,'请输入姓名'],
        minlength: 2,
        maxlength:20
    },
    email: {
        type: String,
        required: [true,'请输入邮箱'],
        // 保证数据唯一不重复
        unique: true
    },
    password: {
        type: String,
        required:[true,'请输入密码']
    },
    // 角色
    // admin 超级管理员
    // normal 普通用户
    role: {
        type: String,
        required:[true,'请选择角色']
    },
    // 0启用状态 1禁用状态
    state: {
        type: Number,
        default:0
    }
}));

// 定义对象的验证规则
const validateUser = user => {
    const schema = joi.object({
        username: joi.string().min(2).max(12).required().error(new Error('用户名不符合规范')),
        email: joi.string().email().error(new Error('邮箱格式不符合规范')),
        password: joi.string().regex(/^[a-zA-z0-9]{3,30}$/).required().error(new Error('用户密码错误')),
        role: joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
        state: joi.number().valid(0, 1).required().error(new Error('状态值不符合规范'))
    });
    // 实施验证
    return schema.validateAsync(user);
};

// async function createUser() {
//     const salt = await bcrypt.genSalt(10);
//     const pass = await bcrypt.hash('liuqi254', salt);
//     //测试代码
//     const user = await User.create({
//         username: 'liuqi',
//         email: '851420437@qq.com',
//         password: pass,
//         role: 'admin',
//         state: 0
//     });
// }
// createUser();

module.exports = {
    User: User,
    validateUser:validateUser
}